package com.thghh.client;

import com.tghhh.gkrpc.Peer;
import com.thghh.gkrpc.TransportClient;

import java.util.List;

/**
 * 选择器，选择某个server去连接
 *
 * @author Zhikang.Peng
 * @version 1.0
 * @email thghh@qq.com
 * @date 2020/4/14 15:22
 */
public interface TransportSelector {

    /**
     * 初始化selector
     *
     * @param peers 可用连接的sever端点信息
     * @param count client于server建立多少个连接
     * @param clazz client实现class
     */
    void init(List<Peer> peers, int count, Class<? extends TransportClient> clazz);

    /**
     * 选择一个transport于server做交互
     *
     * @return
     */
    TransportClient select();

    /**
     * 释放client连接
     *
     * @param client
     */
    void release(TransportClient client);

    /**
     * 关闭连接
     */
    void close();
}
